# 二进制与位运算

# 十进制转换位二进制
# bin() 函数可以将十进制转换为二进制
a = 125
'''
    125 // 2 商 62 余 1
    62 // 2 商 31 余 0
    31 // 2 商 15 余 1
    15 // 2 商 7 余 1
    7 // 2 商 3 余 1
    3 // 2 商 1 余 1
    1 // 2 商 0 余 1
    按照计算结果将玉树从低位到高位依次排列
    1111101
'''
# print(bin(a)) # 0b1111101

# 二进制转换为十进制
'''
    1111101
    1 ==> 1*2**6 ==> 64
    1 ==> 1*2**5 ==> 32
    1 ==> 1*2**4 ==> 16 
    1 ==> 1*2**3 ==> 8
    1 ==> 1*2**2 ==> 4
    0 ==> 0*2**1 ==> 0
    1 ==> 1*2**0 ==> 1
    64+32+16+8+4+0+1 = 125
'''
# int()可以将任意进制数转换为十进制
# print(int(0b1111101))
# print(bin(9990977))


a = 60 # 0b111100
b = 13 # 0b1101
print(a & b) # 12
'''
      111100
    & 001101
    = 001100 // 12
'''
print(a | b) # 61
'''
      111100
    | 001101
    = 111101 // 61
'''
print(a ^ b) # 49
print(~ a) # -61


